package com.swotxu.mall.auth;

import com.swotxu.common.conf.anno.EnableMallRedisHttpSession;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * SpringSession 原理：
 * @EnableRedisHttpSession 导入了 RedisHttpSessionConfiguration 配置类
 *    1、注入了 RedisOperationsSessionRepository 组件：redis操作Session。Session的增删改查操作类
 *    2、注入了 SessionRepositoryFilter 组件：Session存储过滤器（Filter）
 *      创建时，自动从容器中获取并注入了【SessionRepository】
 *    3、Filter对所有请求的 request、response进行包装为自定义对象。SessionRepositoryRequestWrapper/SessionRepositoryResponseWrapper
 *    4、warp中委托 【SessionRepository】获取 RedisSession 对象。
 * 即 装饰者模式。
 *
 */
//@EnableRedisHttpSession // 整合RedisSession
@EnableMallRedisHttpSession // 使用自定义注解整合 RedisSession
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class MallAuthServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallAuthServerApplication.class, args);
    }

}
